#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

#define START   100
#define END     300

int is_prime(int num);

int main(void)
{
    pid_t pid;
    int i;

    /* 创建子进程 */
    for (i = START; i <= END; i++) {
        pid = fork();
        if (pid < 0) {
            perror("fork");
            exit(1);
        } else if (0 == pid) {
            /* 子进程执行任务 */
            is_prime(i) ? printf("%d:Yes\n", i) : printf("%d:No\n", i); 
            // printf("%d\n",getppid()); // 父进程id
            exit(0); // 子进程完成任务后退出
        }
    }

    /* 父进程等待所有子进程完成 */
    for (i = START; i <= END; i++) 
        wait(NULL);

    return 0;
}


int is_prime(int num)
{
    int i;
    sleep(1); // 假设判断每一个数字是否是质数需要1s
    if (num < 2)
        return 0;

    for (i = 2; i <= num / i; i++) {
        if (num % i == 0)
            return 0;
    }

    return 1;
}

